import { NextRequest, NextResponse } from 'next/server';

// 生成反馈的系统提示词
const FEEDBACK_SYSTEM_PROMPT = `你是一位专业的技术面试评估专家，负责对技术面试进行综合评估并提供反馈。
请根据整个面试过程中候选人的回答，提供详细、客观且有建设性的反馈报告。报告应包含以下几个部分：

1. 面试总体评价：对候选人技术能力的整体评估
2. 技术能力亮点：列出候选人表现出色的技术领域和知识点
3. 需要提升的方面：指出候选人需要加强的技术领域和知识点
4. 建议和改进方向：提供具体可行的学习和提升建议
5. 面试结论：给出一个简短的结论，说明候选人是否适合该岗位

请确保评价客观公正，既指出优点，也指出不足，并以积极的语气提出改进建议。
评估应基于候选人在面试中展示的技术深度、问题解决能力、技术视野和沟通表达能力等多个维度。`;

export async function POST(req: NextRequest) {
  try {
    const { position, userInfo, messages } = await req.json();
    
    // 验证必需参数
    if (!position || !userInfo || !messages || !Array.isArray(messages)) {
      return NextResponse.json(
        { error: '缺少必要参数' },
        { status: 400 }
      );
    }

    // 格式化面试记录
    const formattedMessages = messages.map(msg => ({
      role: msg.role,
      content: msg.content
    }));
    
    // 添加候选人信息和岗位信息到系统提示词
    const enhancedSystemPrompt = `${FEEDBACK_SYSTEM_PROMPT}

面试岗位：${position}
候选人信息：
姓名：${userInfo.name}
学历：${userInfo.education}
工作经验：${userInfo.years}年
技术技能：${userInfo.skills.join('、')}
自我介绍：${userInfo.selfIntro}

请基于以上信息和面试对话记录提供评估报告。`;

    // DeepSeek API请求生成面试反馈
    try {
      // 使用实际的 DeepSeek API 配置
      const DEEPSEEK_API_KEY = "sk-dbc2528168b542acbf58df81f0c3db88";
      const DEEPSEEK_API_ENDPOINT = 'https://api.deepseek.com/v1/chat/completions';
      
      const response = await fetch(DEEPSEEK_API_ENDPOINT, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${DEEPSEEK_API_KEY}`,
        },
        body: JSON.stringify({
          model: 'deepseek-chat',
          messages: [
            {
              role: 'system',
              content: enhancedSystemPrompt
            },
            ...formattedMessages,
            {
              role: 'user',
              content: '请根据面试过程，提供详细的面试评估和反馈。'
            }
          ],
          temperature: 0.5,
          max_tokens: 2000
        }),
      });
      
      // 如果DeepSeek API调用成功
      if (response.ok) {
        const data = await response.json();
        const feedbackContent = data.choices[0].message.content;
        
        return NextResponse.json({
          feedback: feedbackContent
        });
      } else {
        // 如果API调用失败，提供默认反馈
        console.error('DeepSeek API调用失败:', await response.text());
        
        // 生成基于面试记录的简单反馈
        const defaultFeedback = generateDefaultFeedback(userInfo, position);
        
        return NextResponse.json({
          feedback: defaultFeedback
        });
      }
    } catch (error) {
      console.error('生成面试反馈时发生错误:', error);
      
      // 提供默认反馈
      const defaultFeedback = generateDefaultFeedback(userInfo, position);
      
      return NextResponse.json({
        feedback: defaultFeedback
      });
    }
    
  } catch (error) {
    console.error('处理请求时发生错误:', error);
    return NextResponse.json(
      { error: '服务器内部错误' },
      { status: 500 }
    );
  }
}

// 生成默认反馈（当API调用失败时使用）
function generateDefaultFeedback(userInfo: any, position: string): string {
  return `# ${userInfo.name}的面试评估报告

## 面试总体评价
基于面试过程中的表现，候选人展示了一定的技术背景和相关经验。

## 技术能力亮点
- 候选人在介绍自己的技术背景时表现出了对相关技术的了解
- 能够回答部分技术问题，展示了基本的技术知识

## 需要提升的方面
- 部分技术问题的回答深度可以进一步加强
- 技术知识的系统性和全面性有待提升

## 建议和改进方向
- 建议进一步深入学习相关技术领域的核心概念
- 可以通过实践项目来巩固和应用技术知识
- 关注行业最新技术发展趋势，拓宽技术视野

## 面试结论
候选人在面试中展示了一定的潜力，建议继续加强技术学习和实践经验的积累，以提升竞争力。

*注：由于技术原因，此反馈为系统自动生成的简化版本，不代表完整评估。*`;
} 